#include "sort.h"

void BubbleSort(SqList &L) {
    n = L.length;
    int m, i, j;
    RedType x;      // 交换时临时存储
    for (m = 1; m <= n-1; m++) {        // 总共需要m趟
        for (j = 1; j <= n-m; j++)
            if (L.r[j].key > L.r[j+1].key)  // 发生逆序
            {
                x = L.r[j]; L.r[j] = L.r[j+1]; L.r[j+1] = x;    // 交换
            }
    }
}

void BubbleSort2(SqList &L) {
    int m, i, j;
    int flag = 1;   // flag作为是否有交换的标记
    RedType x;
    for (m = 1; m <= n-1 && flag == 1; m ++) {
        flag = 0; 
        for (j = 1; j < m; j++)
            if (L.r[j].key > L.r[j+1].key)  // 发生逆序
            {
                flag = 1; // 发生逆序，flag置为1，若本趟没有发生交换，flag保持为0
                x = L.r[j]; L.r[j] = L.r[j+1]; L.r[j+1] = x;    // 交换
            }
    }
}